---
title: Import from Slack
---

import {Steps, TabItem, Tabs} from "@astrojs/starlight/components";

import FlattenedSteps from "../../components/FlattenedSteps.astro";
import ZulipNote from "../../components/ZulipNote.astro";
import ZulipTip from "../../components/ZulipTip.astro";
import ImportGetYourOrganizationStarted from "../include/_ImportGetYourOrganizationStarted.mdx";
import ImportHowUsersWillLogIn from "../include/_ImportHowUsersWillLogIn.mdx";
import ImportIntoASelfHostedServerDescription from "../include/_ImportIntoASelfHostedServerDescription.mdx";
import ImportIntoASelfHostedServerInstructions from "../include/_ImportIntoASelfHostedServerInstructions.mdx";
import ImportIntoAZulipCloudOrganization from "../include/_ImportIntoAZulipCloudOrganization.mdx";
import ImportSelfHostedServerTips from "../include/_ImportSelfHostedServerTips.mdx";
import ImportWorkspaceToZulip from "../include/_ImportWorkspaceToZulip.mdx";
import ImportYourDataIntoZulip from "../include/_ImportYourDataIntoZulip.mdx";
import ImportZulipCloudOrganizationWarning from "../include/_ImportZulipCloudOrganizationWarning.mdx";

<ImportWorkspaceToZulip />

## Import process overview

To import your Slack organization into Zulip, you will need to take the
following steps, which are described in more detail below:

<Steps>
  1. [Export your Slack data](#export-your-slack-data).
  1. [Import your Slack data into Zulip](#import-your-data-into-zulip).
  1. [Clean up](#clean-up-after-the-slack-export) after the Slack export.
  1. [Decide how users will log in](#decide-how-users-will-log-in)!
</Steps>

Be sure to check out the [guide on moving from Slack](/help/moving-from-slack) for
a walkthrough of the transition process.

## Import your organization from Slack into Zulip

{/* Update link in slack_import.html when changing title below. */}

### Export your Slack data

Slack's [data export
service](https://slack.com/services/export) allows you to
export all public channel messages, **including older messages that may no
longer be searchable** under your Slack plan.

Unfortunately, Slack [only
allows](https://slack.com/help/articles/201658943-Export-your-workspace-data)
workspaces that are on the **Business+** or **Enterprise Grid** plans
to export private channels and direct messages. Slack's support has
confirmed this policy as of August 2022.

Owners of **Business+** or **Enterprise Grid** workspaces can [request
special
access](https://slack.com/help/articles/204897248-Guide-to-Slack-import-and-export-tools#options-by-plan)
in order to export direct message data.

#### Export message history

<Steps>
  1. Make sure that you are an owner or admin of your Slack
     workspace. If you are one, the Slack web application will display
     that in your profile, in a banner covering the bottom of your
     avatar.
  1. [Export your Slack message history](https://my.slack.com/services/export).
     You should be able to download a `zip` file with your data a few minutes
     after you start the export process.
</Steps>

#### Export user data and custom emoji

<Steps>
  1. Make sure that you are an owner or admin of your Slack
     workspace. If you are one, the Slack web application will display
     that in your profile, in a banner covering the bottom of your
     avatar.
  1. [Create a new Slack app](https://api.slack.com/apps). Choose the **From
     scratch** creation option.
  1. [Create a
     bot user](https://docs.slack.dev/app-management/quickstart-app-settings/#creating),
     following the instructions to add the following OAuth scopes to your bot:
     * `emoji:read`
     * `users:read`
     * `users:read.email`
     * `team:read`
  1. In **OAuth & Permissions**, under **OAuth Tokens**, click **Install to
     Workspace**. Grant the app permission to access your workspace by
     clicking **Allow** when prompted.
  1. You will immediately see a **Bot User OAuth Token**, which is a long
     string of numbers and characters starting with `xoxb-`. Copy this token. It
     grants access to download user and emoji data from your Slack workspace.
</Steps>

<ZulipNote>
  You may also come across a token starting with `xoxe-`. This token cannot
  be used for the Slack export process.
</ZulipNote>

### Import your data into Zulip

<ImportYourDataIntoZulip />

<Tabs>
  <TabItem label="Zulip Cloud">
    <ImportIntoAZulipCloudOrganization />

    <Steps>
      1. Your Slack **Bot User OAuth Token**, which will be a long
         string of numbers and characters starting with `xoxb-`.
    </Steps>

    <ImportZulipCloudOrganizationWarning />
  </TabItem>

  <TabItem label="Self hosting">
    <ImportIntoASelfHostedServerDescription />

    <FlattenedSteps>
      <ImportIntoASelfHostedServerInstructions />

      1. To import into an organization hosted on the root domain
         (`EXTERNAL_HOST`) of the Zulip installation, run the following
         commands, replacing `<token>` with your Slack **Bot User OAuth Token**.
         <ImportSelfHostedServerTips />
         ```bash "<token>"
         cd /home/zulip/deployments/current
         ./scripts/stop-server
         ./manage.py convert_slack_data /tmp/slack_data.zip --token <token> --output /tmp/converted_slack_data
         ./manage.py import '' /tmp/converted_slack_data
         ./scripts/start-server
         ```
         Alternatively, to import into a custom subdomain, run:
         ```bash "<token>" "<subdomain>"
         cd /home/zulip/deployments/current
         ./scripts/stop-server
         ./manage.py convert_slack_data /tmp/slack_data.zip --token <token> --output /tmp/converted_slack_data
         ./manage.py import <subdomain> /tmp/converted_slack_data
         ./scripts/start-server
         ```
      1. Follow [step 4](https://zulip.readthedocs.io/en/stable/production/install.html#step-4-configure-and-use)
         of the guide for [installing a new Zulip
         server](https://zulip.readthedocs.io/en/stable/production/install.html).
    </FlattenedSteps>
  </TabItem>
</Tabs>

#### Import details

Whether you are using Zulip Cloud or self-hosting Zulip, here are few notes to keep
in mind about the import process:

* Slack does not export workspace settings, so you will need to [configure
  the settings for your Zulip organization](/help/customize-organization-settings).
  This includes settings like [email
  visibility](/help/configure-email-visibility),
  [message editing permissions](/help/restrict-message-editing-and-deletion),
  and [how users can join your organization](/help/restrict-account-creation).
* Slack does not export user settings, so users in your organization may want to
  [customize their account settings](/help/getting-started-with-zulip).
* Slack's user roles are mapped to Zulip's [user
  roles](/help/user-roles) in the following way:
  | Slack role              | Zulip role    |
  | ----------------------- | ------------- |
  | Workspace Primary Owner | Owner         |
  | Workspace Owner         | Owner         |
  | Workspace Admin         | Administrator |
  | Member                  | Member        |
  | Single Channel Guest    | Guest         |
  | Multi Channel Guest     | Guest         |
  | Channel creator         | none          |
* Slack threads are imported as topics with names that include snippets of the
  original message, such as "2023-05-30 Hi, can anyone reply if you're o…".
* Message edit history and `@user joined #channel_name` messages are not imported.

## Clean up after the Slack export

Once your organization has been successfully imported in to Zulip, you should
delete [the Slack app](https://api.slack.com/apps) that you created in order to
[export your Slack data](#export-your-slack-data).  This will prevent the OAuth
token from being used to access your Slack workspace in the future.

## Decide how users will log in

<ImportHowUsersWillLogIn>
  ### Allow users to log in with non-password authentication

  ### Send password reset emails to all users

  ### Manual password resets
</ImportHowUsersWillLogIn>

To prepare your organization for transitioning to Zulip, follow the [guide on
moving from Slack](/help/moving-from-slack).

## Related articles

* [Choosing between Zulip Cloud and self-hosting](/help/zulip-cloud-or-self-hosting)
* [Moving from Slack](/help/moving-from-slack)
* [Slack-compatible incoming webhook](/integrations/slack_incoming)
* [Getting started with Zulip](/help/getting-started-with-zulip)
